package com.vpclub.controller.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @RequestMapping：模糊匹配功能
 *
 * @author : leimingchao
 * @date Date : 2021年07月19日 1:00
 *
 * URL地址可以写模糊的通配符：
 *    ?  : 能替代任意一个字符
 *    *  : 能替代任意多个字符，和一层路径
 *    ** : 能替代多层路径
 *
 */
@Controller
public class RequestMappingTest {

    @RequestMapping(value = "/antTest01")
    public String antTest01() {
        System.out.println("antTest01");
        return "success";
    }

    /**
     * ?:匹配一个字符，0个或多个都不行
     *      模糊和精确多个匹配情况下，精确优先
     * @return
     */
    @RequestMapping(value = "/antTest0?")
    public String antTest02() {
        System.out.println("antTest02");
        return "success";
    }

    /**
     *   * ：匹配任意多个字符(包括0)
     * @return
     */
    @RequestMapping(value = "/antTest0*")
    public String antTest03() {
        System.out.println("antTest03");
        return "success";
    }

    /**
     *    *:匹配任意多个字符(包括0)
     * @return
     */
    // @RequestMapping(value = "/a*/antTest01")
    // public String antTest04() {
    //     System.out.println("antTest04");
    //     return "success";
    // }

    /**
     *    *:可以匹配一层路径
     * @return
     */
    @RequestMapping(value = "/a/*/antTest01")
    public String antTest05() {
        System.out.println("antTest05");
        return "success";
    }


    /**
     * 匹配0层或多层路径
     * @return
     */
    @RequestMapping(value = "/a/**/antTest01")
    public String antTest06() {
        System.out.println("antTest06");
        return "success";
    }

    /**路径上可以有占位符：占位符 语法就是可以在任意路径的地方写一个{变量名}
     * 路径上的占位符只能占一层路径
     * /user/admin  /user/leifengyang
     * @return
     */
    @RequestMapping(value = "/user/{id}")
    public String pathVariable(@PathVariable(value = "id") String id) {
        System.out.println("路径上的占位符的值：" + id);
        return "success";
    }

    @RequestMapping(value = "/{user}/{id}")
    public String pathVariable2(@PathVariable(value = "id") String id,@PathVariable(value = "user") String user) {
        System.out.println("路径上的占位符的值：" + user + "====>" + id);
        return "success";
    }
}
